﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;


namespace UI_SATT
{
    public partial class FrmListaAfiliadoClub : Form, IListadoFederacion,IListadoClub, IListadoAfiliadoClub
    {
        public FrmListaAfiliadoClub()
        {
            InitializeComponent();
        }
        Form Modificainscripcion;
        string ImplementaClubes = "ClubService";
        string ImplementaFederacion = "FederacionService";
        string ImplementaAfiliadoClub = "AfiliadoclubService";
        IClubService ClubServicio;
        string[][] Lista;


        IAfiliadoclubService AfiliadoClub;

        private void FrmAfiliadoClub_Load(object sender, EventArgs e)
        {
            IFederacionService Federacion = (IFederacionService)AppContext.Instance.GetObject(ImplementaFederacion);
            Federacion.ListaFederacion(this);
            ClubServicio = (IClubService)AppContext.Instance.GetObject(ImplementaClubes);
            AfiliadoClub = (IAfiliadoclubService)AppContext.Instance.GetObject(ImplementaAfiliadoClub);   
        }


        #region IListadoAfiliadoClub Members
        public string Club
        {
            get { return CboClub.SelectedItem.ToString(); }
        }

        public string[][] LstAfiliadoClub
        {
            set 
            {
                Lista = value;
                if (DgvAfiliados.ColumnCount == 0)
                {
                    DgvAfiliados.Columns.Add("DNI", "DNI");
                    DgvAfiliados.Columns.Add("Nombre", "Nombre");
                    DgvAfiliados.Columns.Add("FecInsc", "Fecha de Inscripcion");
                    
                }
                if (DgvAfiliados.Rows.Count > 0)
                {
                    DgvAfiliados.Rows.Clear();
                }
                foreach (string[] Objeto in value)
                {
                    DgvAfiliados.Rows.Add(Objeto);
                }
                

            }
        }

        #endregion

        #region Miembros de IListadoClub

        public string NombreFederacion
        {
            get { return CboFederacion.SelectedItem.ToString(); }
        }

        public string[][] LstClub
        {
            set
            {
                if (CboClub.Items.Count > 0)
                    CboClub.Items.Clear();
                foreach (string[] Objeto in value)
                {
                    CboClub.Items.Add(Objeto[0]);
                }
                CboClub.SelectedIndex = -1;
            }
        }

        #endregion

        #region IListadoFederacion Members

        public string[][] Listado
        {
            set
            {
                if (CboFederacion.Items.Count > 0)
                    CboFederacion.Items.Clear();
                foreach (string[] Objeto in value)
                {
                    CboFederacion.Items.Add(Objeto[0]);
                }
                CboFederacion.SelectedIndex = -1;
            }
        }

        #endregion

        private void CboFederacion_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ClubServicio.ListaClub(this);
        }

        private void CboClub_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if(CboFederacion.SelectedIndex>-1)
            AfiliadoClub.ListaAfiliadoclub(this);
        }



        private void BtnModificarAfiliado_Click(object sender, EventArgs e)
        {
            if (CboFederacion.SelectedIndex < 0)
                MessageBox.Show("Debe seleccionar una federacion de la lista");
            else
            {
                if (CboClub.SelectedIndex < 0)
                    MessageBox.Show("Debe seleccionar un club de la lista");
                else
                {

                    if (DgvAfiliados.SelectedRows.Count == 0 || DgvAfiliados.SelectedRows[0].Cells["DNI"].Value == null)
                    {
                        Modificainscripcion = new FrmNuevaAfiliacion(this.Club);
                        if (Modificainscripcion.ShowDialog() == DialogResult.OK)
                            AfiliadoClub.ListaAfiliadoclub(this);
                    }
                    else
                    {
                        Modificainscripcion = new FrmNuevaAfiliacion(int.Parse(DgvAfiliados.SelectedRows[0].Cells["DNI"].Value.ToString()), this.Club);
                        if (Modificainscripcion.ShowDialog() == DialogResult.OK)
                            AfiliadoClub.ListaAfiliadoclub(this);

                        
                    }
                }
            }
        }

        private void BtnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
